package net.towee.client.com.repo;

import java.util.List;

import net.towee.client.com.app.Presenter;
import net.towee.model.repo.NodeData;

/**
 * Interface for any node showers. Needed to 
 * @author c58
 */
public interface AbstractNodeShower extends Presenter {
	/**
	 * @return Return list of selected nodes. When user click remove
	 * 		   button, presenter invoke this method for getting
	 * 		   nodes for removing.
	 */
	List<NodeData> getSelectedNodes();
	
	/**
	 * @return current showed node
	 */
	NodeData getShowedNode();
	
	/**
	 * This method invoked before go invocation
	 * @param node
	 */
	void setNode(NodeData node);

	/**
	 * Hide some nodes from shower container
	 * @param cutNodes
	 */
	void removeNodes(List<NodeData> cutNodes);

	/**
	 * Show hidden nodes
	 * @param cutNodes
	 */
	void showNodes(List<NodeData> cutNodes);
}
